#!/bin/bash
# png2icns.sh
# 用法: ./png2icns.sh input.png 输出 icns 文件名
# 例如: ./png2icns.sh icon.png icon.icns

set -e

if [ $# -lt 2 ]; then
  echo "用法: $0 <输入 PNG> <输出 ICNS>"
  exit 1
fi

INPUT_PNG="$1"
OUTPUT_ICNS="$2"

# 检查文件是否存在
if [ ! -f "$INPUT_PNG" ]; then
  echo "错误: 输入文件 $INPUT_PNG 不存在"
  exit 1
fi

# 创建临时 iconset 目录
ICONSET_DIR="temp.iconset"
rm -rf "$ICONSET_DIR"
mkdir "$ICONSET_DIR"

# 定义尺寸和输出文件名
declare -a sizes=("16" "32" "64" "128" "256" "512" "1024")
for size in "${sizes[@]}"; do
  sips -z "$size" "$size" "$INPUT_PNG" --out "$ICONSET_DIR/icon_${size}x${size}.png"
  sips -z $(($size*2)) $(($size*2)) "$INPUT_PNG" --out "$ICONSET_DIR/icon_${size}x${size}@2x.png"
done

# 生成 icns 文件
iconutil -c icns "$ICONSET_DIR" -o "$OUTPUT_ICNS"

# 清理临时目录
rm -rf "$ICONSET_DIR"

echo "✅ 已生成 $OUTPUT_ICNS"
